﻿#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
void exit_s(int status)
{
	if(WIFEXITED(status))
		printf("normal exit,status=%d\n",WEXITSTATUS(status));
	else if(WIFSIGNALED(status))
		printf("signal exit!status=%d\n",WTERMSIG(status));
}
int main(void)
{
	pid_t pid,pid1;
	int status;
	if((pid=fork())<0)
	{
		printf("child process error!\n");
		exit(0);
	}
	else if(pid==0)
	{
		printf("the child process!\n");
		exit(2);  //这儿到底应该是0,1,还是2,这个exit（）里面的参数到底是什么意思？百度上说exit（0）是正常退出，非0则是不正常退出。
	}
	if(wait(&status)!=pid)
	{
		printf("this is a parent process!\nwait error!\n");
		exit(0);
	}
	exit_s(status);
	if((pid=fork())<0)
	{
		printf("child process error!\n");
		exit(0);
	}
	else if(pid==0)
	{
		printf("the child process!\n");
		pid1=getpid();
		kill(pid1,9);  // -9 即：立即终止
	//	kill(pid1,17);  -17 这个没见过。。。
	//	kill(pid1,19);×××××这儿-19参数是让进程暂停，可以在top里看到，也可以用 ps -le 找到×××
	}
	if(wait(&status)!=pid)
	{
		printf("this is a parent process!\nwait error!\n");
		exit(0);
	}
	exit_s(status);

exit(0);
	
}
